Industrial controllers are special purpose processing devices used for controlling (e.g., automated and semi-automated) industrial processes, machines, manufacturing equipment, plants, and the like. A typical controller executes a control program or routine in order to measure one or more process variables or inputs representative of the status of a controlled process and/or effectuate outputs associated with control of the process. Such inputs and outputs can be binary, (e.g., “1” or “0,” “on” or “off,” . . . ), and/or analog, assuming a continuous range of values. A typical control routine can be created in a controller configuration environment that has various tools and interfaces whereby a developer can construct and implement a control strategy using industrial and conventional programming languages or graphical representations of control functionality. Such control routine can be downloaded from the configuration system into one or more controllers for implementation of the control strategy in controlling a process or machine.
Measured inputs received from a controlled process and outputs transmitted to the process can pass through one or more input/output (I/O) modules in a control system. Such modules can serve in the capacity of an electrical interface between the controller and the controlled process and can be located local or remote from the controller. Inputs and outputs can be recorded in an I/O memory. The input values can be asynchronously or synchronously read from the controlled process by one or more input modules and output values can be written directly to memory by a processor for subsequent communication to the process by specialized communications circuitry. An output module can interface directly with a controlled process by providing an output from memory to an actuator such as a motor, drive, valve, solenoid, and the like.
During execution of the control routine, values of the inputs and outputs exchanged with the controlled process can pass through memory. The values of inputs in memory can be asynchronously or synchronously updated from the controlled process by dedicated and/or common scanning circuitry. Such scanning circuitry can communicate with input and/or output modules over a bus on a backplane or network. The scanning circuitry can also asynchronously or synchronously write values of the outputs in memory to the controlled process. The output values from the memory can be communicated to one or more output modules for interfacing with the process. Thus, a controller processor can simply access the memory rather than needing to communicate directly with the controlled process.
In distributed control systems, controller hardware configuration can be facilitated by separating the industrial controller into a number of control elements, each of which performs a different function. Particular control modules needed for the control task can then be connected together on a common backplane within a rack and/or through a network or other communications medium. The control modules can include processors, power supplies, network communication modules, and I/O modules exchanging input and output signals directly with the controlled process. Data can be exchanged between modules using a backplane communications bus, which can be serial or parallel, or via a network. In addition to performing I/O operations based solely on network communications, smart modules exist which can execute autonomous logical or other control programs or routines. Various control modules of a distributed industrial control system can be spatially distributed along a common communication link in several locations. Certain I/O modules can thus be located proximate a portion of the controlled equipment, and away from the controller. Data can be communicated with these remote modules over a common communication link, or network, wherein all modules on the network communicate via a standard communications protocol.
In a typical distributed control system, one or more I/O modules are provided for interfacing with a process. The outputs derive their control or output values in the form of a message from a master or peer device over a network or a backplane. For example, an output module can receive an output value from a processor via a communications network or a backplane communications bus. The desired output value is generally sent to the output module in a message. The output module receiving such a message will provide a corresponding output (analog or digital) to the controlled process. Input modules measure a value of a process variable and report the input values to another device over a network or backplane. The input values can be used by a processor for performing control computations.
As noted above, a controller can execute routines to control machines, processes, manufacturing equipment, plants, and the like, and such routines can be created in a controller configuration environment and downloaded to the controller for execution. In many instances, an end-user tailors code for a particular controller in order to control a specific machine, process, equipment, plant, etc. in a desired manner. Within this code, the end-user can make one or more calls to one or more add-on instructions. Such add-on instructions, in general, respectively include and relate a set of re-usable routines, data parameters and/or state data. When viewing logic or state data in a user interface (UI) for an add-on instruction routine, the end-user generally is unable to determine which specific call to that routine is causing a particular data value to be set to the current value. In addition, if there are multiple calls, respective calls typically overwrite data visible in the UI, and the last call that wrote to the value before the UI is updated is shown. This inability to distinguish which call caused the data value to be set is a significant shortcoming with conventional systems.